/**
 * 
 */
package br.com.consultsystems.negocio.impl.configuracao;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import org.apache.log4j.Logger;

import br.com.consultsystems.dominio.configuracao.Usuario;
import br.com.consultsystems.libutils.exception.CredenciaisInvalidasException;
import br.com.consultsystems.negocio.spec.configuracao.UsuarioNegocio;
import br.com.consultsystems.persistencia.spec.configuracao.UsuarioPersistencia;

/**
 * @author Moralles
 *
 */
@Stateless(name = "usuarioNegocio")
public class UsuarioNegocioImpl implements UsuarioNegocio {

	private static final Logger LOG = Logger.getLogger(UsuarioNegocioImpl.class);
	
	@EJB
	private UsuarioPersistencia usuarioPersistencia;
	
	@Override
	public Usuario merge(Usuario t) throws Exception {
		return usuarioPersistencia.merge(t);
	}

	@Override
	public Usuario retrieve(Long id) throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void remove(Usuario t) throws Exception {
		t = this.merge(t);
		usuarioPersistencia.remove(t);
	}

	@Override
	public void refresh(Usuario t) throws Exception {
		usuarioPersistencia.refresh(t);
	}

	@Override
	public List<Usuario> retrieveAll() throws Exception {
		return usuarioPersistencia.retrieveAll();
	}

	@Override
	public Usuario retrieveByEmail(String email) throws Exception {
		return usuarioPersistencia.retrieveByEmail(email);
	}

	@Override
	public Usuario login(String email, String senha)
			throws CredenciaisInvalidasException {
		
		
		Usuario usuario = null;
		
		try {
			usuario = usuarioPersistencia.retrieveByEmail(email);

			if (usuario != null) {
				if (senha.equals(usuario.getSenha())) {
					return usuario;
				}
			}

		} catch (Exception e) {
			throw new CredenciaisInvalidasException();
		}
		
		LOG.info("Usuario não encontrado ou senha inválida!!");
		return null;
	}

}
